|
ARD2
1.00 for Rev B. Hardware
Airbag Reference Demonstrator using MPC5604P
|
00001 00018 #ifndef MAILDELIVERY_H_ 00019 #define MAILDELIVERY_H_ 00020 /* 00021 ************************************************************** 00022 * Defines, Macros and Typedefs 00023 **************************************************************/ 00024 /*** Constant Macros ***/ 00025 /* Default Yes and No defines */ 00026 #ifndef TRUE 00027 #define TRUE (1u) 00028 #endif 00029 #ifndef CLEAR 00030 #define CLEAR (0u) 00031 #endif 00032 #ifndef BITS_IN_NIBBLE 00033 #define BITS_IN_NIBBLE (4u) 00034 #endif 00035 #ifndef BITS_IN_BYTE 00036 #define BITS_IN_BYTE (8u) 00037 #endif 00038 #ifndef BITS_IN_32 00039 #define BITS_IN_32 (32u) 00040 #endif 00041 #ifndef BITS_IN_16 00042 #define BITS_IN_16 (16u) 00043 #endif 00044 #ifndef BYTES_IN_32 00045 #define BYTES_IN_32 (4u) 00046 #endif 00047 #ifndef BYTES_IN_16 00048 #define BYTES_IN_16 (2u) 00049 #endif 00050 00051 /* Mail DMAs */ 00052 #define MAILDELIVERY_OUTBOX1_DMA_CH (0x0Eu) 00053 #define MAILDELIVERY_OUTBOX2_DMA_CH (0x0Fu) 00054 #define MAILDELIVERY_INBOX1_DMA_CH (0x0Cu) 00055 #define MAILDELIVERY_INBOX2_DMA_CH (0x0Du) 00056 00057 #define MAILDELIVERY_INBOX1_DMA_INDEX_START (0u) 00058 #define MAILDELIVERY_INBOX1_DMA_INDEX_END (INBOX_MAX_BUFFER_CNT - 1) 00059 #define MAILDELIVERY_INBOX2_DMA_INDEX_START (INBOX_MAX_BUFFER_CNT) 00060 #define MAILDELIVERY_INBOX2_DMA_INDEX_END ((INBOX_MAX_BUFFER_CNT * 2u) - 1u) 00061 00062 /* Maximum number of messages */ 00063 #define OUTBOX_MAX_BUFFER_CNT (48u) 00064 #define INBOX_MAX_BUFFER_CNT (48u) 00065 00066 /* Permissions */ 00067 #define MAILBOX_WRITING_ALLOWED (0xA0u) 00068 #define MAILBOX_WRITING_PROHIBITED (0x0Au) 00069 00070 /* Define contents of mailboxes according to position */ 00071 #define OUTBOX_ACTIVE_OUTBOX_IS_1 (0u) 00072 #define OUTBOX_ACTIVE_OUTBOX_IS_2 (OUTBOX_MAX_BUFFER_CNT + 1u) 00073 #define MAILBOX_ACTIVE_INBOX_IS_1 (-1) 00074 #define MAILBOX_ACTIVE_INBOX_IS_2 (-2) 00075 #define MAILBOX_NO_PREVIOUS_INBOX (0u) 00076 00077 /* Define error codes */ 00078 #define MAILBOX_CAPACITY_HAS_BEEN_REACHED (0x20u) 00079 #define MAILBOX_IS_BEING_WRITTEN (0x10u) 00080 00081 /*** Function Macros ***/ 00082 /* This macro is here to replace vfnMailDeliveryTriggerOutbox 00083 #define TRIGGER_OUTBOX(XX, YY) vfnDMAMUXInit(XX, DMA_SOURCE_DSPI0_TX, CLEAR, YY) 00084 /*** Enums ***/ 00085 00086 /*** TypeDefs ***/ 00087 00088 /* 00089 ************************************************************** 00090 * Declarations 00091 **************************************************************/ 00092 /*** Constants ***/ 00093 00094 /*** Globals ***/ 00095 extern vuint32_t gau32DSPIOutbox[(OUTBOX_MAX_BUFFER_CNT + 1u) * 2u]; 00096 extern vuint16_t gau16DSPIInbox[OUTBOX_MAX_BUFFER_CNT + 1u]; 00097 extern vuint8_t gu8MailboxActiveOutboxOffset; 00098 extern vuint8_t gu8InboxDMA; 00099 extern vuint8_t gu8InactiveInboxDMA; 00100 extern vuint8_t gu8OutboxDMA; 00101 extern vuint8_t gu8InactiveOutboxDMA; 00102 /* 00103 ************************************************************** 00104 * Function Prototypes 00105 **************************************************************/ 00106 /* 00107 ****************************************************************************** 00108 * 00109 * Function: u8fnMailDeliveryOfOutboxInit() 00110 * 00111 */ 00124 uint8_t u8fnMailDeliveryOfOutboxInit(uint32_t* pu32Outbox, 00125 uint32_t* pu32Output, 00126 uint8_t u8DMAChannel); 00127 /* 00128 ****************************************************************************** 00129 * 00130 * Function: u8fnMailDeliveryToInboxInit() 00131 * 00132 */ 00144 uint8_t u8fnMailDeliveryToInboxInit(uint16_t* pu16Input); 00145 /* 00146 ****************************************************************************** 00147 * 00148 * Function: vfnMailboxInit() 00149 * 00150 */ 00157 void vfnMailboxInit(void); 00158 /* 00159 ****************************************************************************** 00160 * 00161 * Function: u8fnMailboxAppendToDSPIOutbox() 00162 * 00163 */ 00185 uint8_t u8fnMailboxAppendToDSPIOutbox(uint8_t u8DSPIInstance, uint8_t u8CS, 00186 uint8_t u8ContCS, 00187 uint8_t u8EndOfQueueFlag, 00188 uint16_t* pu16Msg, uint16_t u16Size); 00189 /* 00190 ****************************************************************************** 00191 * 00192 * Function: u8fnMailboxAppendToCompositeDSPIOutbox() 00193 * 00194 */ 00217 uint8_t u8fnMailboxAppendToCompositeDSPIOutbox(uint8_t u8DSPIInstance1, 00218 uint8_t u8DSPIInstance2, 00219 uint8_t u8CS, 00220 uint16_t* pu16Msg1, 00221 uint16_t* pu16Msg2, 00222 uint16_t u16SizeAtOrigin); 00223 /* 00224 ****************************************************************************** 00225 * 00226 * Function: u8fnMailboxAppendToOutbox() 00227 * 00228 */ 00240 uint8_t u8fnMailboxAppendToOutbox(uint32_t* pu32Mailbox, uint32_t u32Message); 00241 /* 00242 ****************************************************************************** 00243 * 00244 * Function: u8fnMailboxAppendToInbox() 00245 * 00246 */ 00255 uint8_t u8fnMailboxAppendToInbox(const uint16_t* pu16MsgResponse, 00256 uint16_t u16Size); 00257 /* 00258 ****************************************************************************** 00259 * 00260 * Function: vfnMailboxSwitchActiveMailboxes() 00261 * 00262 */ 00269 void vfnMailboxSwitchActiveMailboxes(void); 00270 /* 00271 ****************************************************************************** 00272 * 00273 * Function: vfnMailDeliveryTriggerOutbox() 00274 * 00275 */ 00285 void vfnMailDeliveryTriggerOutbox(uint8_t u8DMAMuxChannel, uint8_t u8Enable); 00286 #endif /* MAILDELIVERY_H_ */